1. Field of the Invention
This invention relates to the field of data busses, and particularly to methods of notifying an originating device that a client device is aborting a bus message.
2. Description of the Related Art
Data busses, found in virtually all computers and computer-based products, are used to convey data between devices connected to the bus. When data is conveyed between an originating device and a “client” device, there exists the possibility that the data will become corrupted en route.
Various schemes have been developed to alleviate this problem. For example, some data bus protocols employ some type of “frame check sequence” (FCS), i.e., one or more data bits that have a value based on the data conveyed, which is included as part of each data message returned by a client device to an originating device. The value of the FCS is calculated in a manner known to both originating and client devices. When a message is received from a client device, an FCS value for the message's data content is calculated by the originating device, and then compared to the received FCS to determine message integrity. One such approach, described in U.S. Pat. No. 6,327,688 to Stolitzka et al., automatically and atomically includes an FCS as part of each message sent by a client device.
A problem arises, however, when a client device needs to notify an originating device that a message needs to be aborted by the client; i.e., “client-aborted”. Various methods have been used to indicate a client-aborted message, including responding with a fixed and known FCS value such as all ones or all zeros, leaving the bus high, leaving the bus low, or setting a status register bit. However, responding with a fixed and known FCS value to indicate an abort may be problematic, since there is some likelihood that a message's FCS will be the same as the fixed and known abort value. As such, a ‘good’ message may be mistaken for an aborted one. Setting a status register bit is also troublesome, as the status register must either be read in another message or added as payload to the present message. Both of these remedies decrease useful bus bandwidth and add unneeded bytes to the existing message.